<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function Animal (name, age) {
            this.name = name
            this.age = age
            console.log(this)
            // this.say = function () {
            //     console.log(`My name is ${this.name}, I am ${this.age} years old`)
            // }
        }
        console.log(Animal.prototype)
        //构造原型函数的原型对象：为了所有实例共享属性和方法
        Animal.prototype.walk = function () {
            console.log(`${this.name} is walking`)
        }

        var cat = new Animal('Tom', 30)
        // cat.say () //My name is Tom, I am 30 years old
        // cat.walk() //Tom is walking

        // var mouse = new Animal('Jerry', 20)
        // mouse.say()
        // mouse.walk()


        // console.log(cat.say === mouse.say) //false 调用的方法是相同的但是每次调用方法的位置不同
        //                                    //每次new一个对象，say方法就要创建一个，所以每次say方法的地址不同


        // console.log(cat.walk === mouse.walk) // true 伴生体是原型对象的公共部分，所以给原型对象添加的方法就是这个构件函数的公共部分
        //                                     //原型对象的方法可以被多次调用


    </script>
</body>
</html>